/*
 * Licensed to the 南京汇海交通科技有限公司
 *
 * Copyright (c) 2025.
 * All rights reserved.
 *
 * 本软件属南京汇海交通科技有限公司所有，在未获得南京汇海交通科技有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.chframework.http.template;

import com.chframework.http.HttpRequestHandlerContext;
import com.chframework.http.HttpRequestHandlerFactory;
import com.chframework.http.utility.HttpResponseEntity;
import com.chframework.http.utility.ServiceConfigInfo;
import com.chframework.http.handler.IHttpRequestHandler;
import org.springframework.stereotype.Component;

/**
 * <p>
 * 基于Http协议实现网络数据交互的模板服务类 - 请求模板
 * </p>
 *
 * @author 周孝兵
 * @since 2021-11-28
 */
@Component
public class HttpRequestTemplate {

    /**
     * 执行 HTTP 请求
     *
     * @param serviceConfigInfo 网络服务的请求参数
     * @return 根据HTTP响应参数配置信息解析后得到的数据对象
     */
    public HttpResponseEntity doRequest(ServiceConfigInfo serviceConfigInfo) {
        // 1. 获取当前网络服务的请求方式
        String requestMethod = serviceConfigInfo.getServiceRequestConfigInfo().getRequestMethod();

        // 2. 根据 逻辑配置参数和请求参数 执行 HTTP 请求
        IHttpRequestHandler httpRequestHandler = HttpRequestHandlerFactory.createHttpRequestHandler(requestMethod);
        HttpRequestHandlerContext context = new HttpRequestHandlerContext(httpRequestHandler);
        return context.sendHttpRequest(serviceConfigInfo);
    }

}
